package com.itfenghuang.day12;

public class A04_DieLock {
    public static void main(String[] args) {
        /**
         *  线程死锁
         *      由于两个或两个以上的线程互相持有对方所需要的锁,
         *      导致这些线程处于等待的状态,无法继续执行就会出现死锁
         *
         *  解决死锁问题
         *          不写就行
         *
         *  等待唤醒机制(生产者和消费者模型)  线程生命周期
         *  RubbitMQ 消息队列  生产者和消费者
         */

        //创建两个锁对象
        Object o1 = new Object();
        Object o2 = new Object();
        //使用匿名内部类
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                  synchronized (o1){
                      synchronized (o2){
                          System.out.println("二二二二二");
                      }
                  }
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                  synchronized (o2){
                      synchronized (o1){
                          System.out.println("==========囍=========");
                      }
                  }
                }
            }
        }).start();

    }
}
